There is a need for a partially automated approach to detecting outliers in animal tracking data.

Isolation forest is an efficient method of anomaly detection for high dimensional data. Data can be of any type and require no scaling. It grows random decision trees, picks a feature at random, and using a random threshold value attempts to partition the data set. As the data get increasingly partitioned, each observation gets isolated, and observations that are easiest to isolate are identified as anomalous.

Observations are given an anomaly score between 0 and 1, values at .5 and below are not anomalous, and values approaching 1 are increasingly anomalous.

Liu, F. T., Ting, K. M., & Zhou, Z. H. (2012). Isolation-based anomaly detection. ACM Transactions on Knowledge Discovery from Data (TKDD), 6(1), 1-39.

When applied to movement data, I propose a workflow where speed, distance from median location, and (when relevant) height are evaluated by isolation forest for anomaly detection in animal tracking data.

The above plot is example data from a kinkajou. The data were collected every 4 minutes in 6 second bursts. The only processing done on this dataset for this example is filtering it down to only the last fix of each burst.

I calculated speed, distance from the median location for each fix, and the vertical component of the tag data. I then applied Isolation forest four times, once as a multinimensional case including all metrics, and once with each metric as single dimensions.

Because I am interested in bad fixes, and not behavioral outliers, I am only considering the fixes with anomaly scores in the 99.5% quantile of the distribution of anomaly scores.

The following plot is an example zooming into a potential outlier of interest in order to see the behaviors before and after.

I propose automatically flagging unanimously detected anomalies as outliers, and leaving outliers only detected by a single dimension as points requiring manual inspection.

Isolation forest seems to do a reasonable job identifying aggregious outliers. In this example, out of 15965 fixes, there were 80 unanimously identified as outliers.